<?php

class AclController extends Controller {

	public $nome = 'Acl';
	
	public $useModel = 'Acl';

	public function index() {
		$this->useModel(array('Seguranca', 'Modulo', 'Operacao', 'Permissao'));
		
		$segurancas = $this->Seguranca->selectAll(array('where'=>array('status' => true), 'fields' => array('id', 'seguranca_exibicao')));
		$modulos = $this->Modulo->selectAll(array('where'=>array('status' => true), 'fields' => array('id', 'modulo_exibicao')));
		// montando o array de operações que podem ser realizadas em determinado módulo
		foreach($modulos['Modulo'] as $indice => $modulo) {
			$operacoes = $this->Operacao->operacoesNoModulo($modulo['id']);
			$modulos['Modulo'][$indice]['Operacao'] = $operacoes;
		}
		unset($operacoes);
		
		$permissoes = $this->Permissao->selectAll(array('where'=>array('status' => true), 'fields' => array('id', 'permissao'), 'order'=>array('id DESC')));
		
		$this->set('segurancas', $segurancas);
		$this->set('modulos', $modulos);
		$this->set('permissoes', $permissoes);
	}
	
	public function add() {
		if(isset($this->data)) {
			$acl['SegurancaPermissoes'] = array();
			$aclDelete['SegurancaPermissoes'] = array();
			// formatando o array para fazer o insert
			// perfil(segurança)
			$i = 0;
			foreach($this->data['Permissao'] as $segurancaIndice => $seguranca) {
				$segurancaId = explode('_', $segurancaIndice);
				$segurancaId = $segurancaId[1];
				$acl['SegurancaPermissoes'][$i]['seguranca_id'] = $segurancaId;
				// módulo
				foreach($seguranca as $moduloIndice => $modulo) {
					$moduloId = explode('_', $moduloIndice);
					$moduloId = $moduloId[1];
					// operação
					foreach($modulo as $operacaoIndice => $permissaoId) {
						$operacaoId = explode('_', $operacaoIndice);
						$operacaoId = $operacaoId[1];
						// array do insert dos registros
						$acl['SegurancaPermissoes'][$i]['seguranca_id'] = $segurancaId;
						$acl['SegurancaPermissoes'][$i]['permissao_id'] = $permissaoId;
						$acl['SegurancaPermissoes'][$i]['modulo_id'] = $moduloId;
						$acl['SegurancaPermissoes'][$i]['operacao_id'] = $operacaoId;
						// array do delete dos registros
						$aclDelete['SegurancaPermissoes'][$i]['seguranca_id'] = $segurancaId;
						$aclDelete['SegurancaPermissoes'][$i]['modulo_id'] = $moduloId;
						
						$i++;
					}
				}
			}
			
			$this->data = $acl;
			unset($acl);
			
			if($this->Acl->insereRelacionamento($this->data, $aclDelete)) {
				$this->Sessao->mensagem('sucesso', 'Operação realizada com sucesso!');
				header('Location: ../Acl/index');
			} else {
				//$this->Sessao->mensagem('erro', 'Ocorreu ao realizar ao realizar a operação solicitada');
				//header('Location: ../Acl/index');
			}
		}
	}

}
